Appearance
基础概念
Namespace+Group+DataID三者的关系

多环境配置
略
注意事项
命名空间id用于唯一标识命名空间, 新建命名空间时候,如果不填写命名空间id,则系统会自动生成命名空间id,生成规则为UUID方式。
但在spring 项目中集成nacos 的时候,配置文件中填写的namespace就是命名空间的id

因此尽量保持nacos的命名空间名称和id 一致

服务发现
在 spring-cloud-alibaba-service 的主启动类上,使用 @EnableDiscoveryClient 注解开启 Nacos 服务发现功能
你访问该服务下的某个请求链接,再查看 nacos “服务管理”下的“服务列表”,会发现已经注册上了。
一般在消费端会引入 spring-cloud-loadbalancer 进行调用服务提供者提供的服务
参考: https://cloud.tencent.com/developer/article/2226330
服务发现是先获取本地缓存,如果没有本地缓存,就请求Nacos Server服务端获取数据,如果Nacos Server挂了,也不会影响服务的调用。
服务发现:

配置中心
动态获取配置内容
在应用的 POM 文件中引入 spring-cloud-starter-alibaba-nacos-config ,可实现配置的获取与动态刷新
示例
bootstrap.yml 文件配置
server:
port: 3377 #端口号
spring:
application:
name: config-client #服务名
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #Nacos服务注册中心地址
config:
server-addr: 127.0.0.1:8848 #Nacos作为配置中心地址
file-extension: yaml #指定yaml格式的配置
profiles:
active: dev #激活 dev 的配置在 icu.luoqi.nacos.controller 包下,创建一个名为 ConfigClientController 的 Controller 类,并在该类上使用 @RefreshScope 注解实现配置的自动更新,代码如下
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class ConfigClientController {
@Value("${config.info}")
private String ConfigInfo;
@GetMapping("/config/info")
public String getConfigInfo(){
return ConfigInfo;
}
}主启动类上,使用 @EnableDiscoveryClient 注解开启服务发现功能
启动 Nacos Server,并在 Nacos Server 控制台的“配置管理”下的“配置列表”中,点击“+”按钮,新建如下配置
Data ID: config-client-dev.yaml
Group: DEFAULT_GROUP
配置格式: YAML
配置内容: config:
info: xxxx在 Nacos Server 中,配置的 dataId(即 Data ID)的完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}启动该服务,并使用浏览器访问“http://localhost:3377/config/info”,
在这种情况下,能够实现不重启后台服务,当你手动修改 nacos 的配置时,能够动态获取到配置内容。
Nacos Config配置集的三种方式和加载顺序
- 通过 spring.cloud.nacos.config.shared-configs 配置项,支持多个共享 Nacos 配置集。
- 通过 spring.cloud.nacos.config.extension-configs 配置项,支持多个拓展 Nacos 配置集。
- 通过 spring.cloud.nacos.config.name 配置项,支持一个 Nacos 配置集。
当三种方式共同使用时,它们的优先级关系是:A < B < C。另外,A 和 B 的命名带有“共享”或是“拓展”,没有任何含义,只是优先级不同
参考
- https://blog.csdn.net/qq_36903261/article/details/106835279
- https://m.biancheng.net/springcloud/nacos.html
- https://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html
- https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
- https://blog.csdn.net/weixin_45397785/article/details/128076533
- https://blog.csdn.net/ysj1241267542/article/details/112562611
- https://blog.csdn.net/u010520146/article/details/118703413
- https://blog.csdn.net/wangwei021933/article/details/129590430